//用户余额账单相关

const res = require('express/lib/response')
const user = require('../sql/index')
const bill = require('../sql/bill')

// 用户余额计算规则
// 月卡 30元每月 不限次数使用
// 次卡 2元每次 不限使用事件
// 余额存储单位 为人民币
// 月卡次卡仅针对于车牌号小钱包
// 车牌号小钱包存储单位统一为元
// 由前端识别月卡或次卡用户进行转化
// 大小钱包余额可以转换
// 大钱包支持充值和退费

// 账单写入函数
const billDetails = (userAccount,billType,billAmount,userBalance,userPlateNumber,res) => {
  const sql = 'insert into userbill set ?'

  var date = new Date();

  bill.query(sql,{
    userAccount : userAccount ,
    billType : billType,
    billAmount : billAmount,
    billYear : date.getFullYear(),
    billMouth : date.getMonth()+1,
    billDay : date .getDate(),
    userBalance : userBalance,
    userPlateNumber : userPlateNumber
  },(err,results)=>{
    if(err) 
        return res.send(err)
    if(results.affectedRows !== 1) 
        return res.send('服务器错误')
    return res.send({
      status:0,
      massage:'操作成功！'
    })
  })
}
// 大钱包操作函数
exports.bigWallet = (req,res) =>{
  // console.log("1");
  const userinfo = req.body
  const sql = 'select balance from user where userAccount=?'

  let userBalance = 0
  user.query(sql,userinfo.userAccount,(err,results)=>{
    // console.log("2");
    if(err) return res.cc(err)
    // console.log("3");
    if(results.length !== 1) return res.cc('获取用户信息失败！')
    // console.log("4");
    userBalance = +results[0].balance

    if(userinfo.type === 'recharge')
      userBalance += +userinfo.amount
    else if(userinfo.type === 'refund')
      userBalance -= +userinfo.amount
    else
      res.cc('服务器参数错误！')

    if(userBalance < 0)
      res.cc('退费操作后余额不能小于 0 元')

    user.query('update user set balance=? where userAccount=?',[userBalance,userinfo.userAccount],(err,results)=>{
      if(err) 
        return res.cc(err)
      if(results.affectedRows !==1) 
        return res.cc('操作失败！数据库错误')
    })

    billDetails(userinfo.userAccount,'bigWallet_'+userinfo.type,userinfo.amount,userBalance,-1,res)
  })
}
// 小钱包操作函数
exports.smallWallet = (req,res) =>{
  const userinfo = req.body

  let plateBlance = 0
  const sql = `select `+ userinfo.plateNumber+','+userinfo.plateNumber+`_balance from user where userAccount=?`

  user.query(sql,userinfo.userAccount,(err,results)=>{
    if(err) return res.cc(err)
    if(results.length !== 1) return res.cc('获取用户信息失败！')

    if(userinfo.plateNumber == "plateNumber1"){
      plateBlance += +results[0].plateNumber1_balance
      userinfo.plate = results[0].plateNumber1
    }else if(userinfo.plateNumber == "plateNumber2"){
      plateBlance += +results[0].plateNumber2_balance
      userinfo.plate = results[0].plateNumber2
    }else if(userinfo.plateNumber == "plateNumber3"){
      plateBlance += +results[0].plateNumber3_balance
      userinfo.plate = results[0].plateNumber3
    }

    if(userinfo.type === 'recharge')
        plateBlance += +userinfo.amount
      else if(userinfo.type === 'refund')
        plateBlance -= +userinfo.amount
      else
        return res.cc('服务器参数错误！')

    if(plateBlance < 0)
        return res.cc('退费操作后余额不能小于 0 元')

    user.query(`update user set `+userinfo.plateNumber +`_balance=? where userAccount=?`,[plateBlance,userinfo.userAccount],(err,results)=>{
      if(err) 
        return res.cc(err)
      if(results.affectedRows !==1) 
        return res.cc('操作失败！数据库错误')
    })

    billDetails(userinfo.userAccount,'smallWallet_'+userinfo.type,userinfo.amount,plateBlance,userinfo.plate,res)
  })
}